import com.spring.demo.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        // 1.得到Spring  ApplicationContext是接口 ClassPathXmlApplicationContext是它的一个实现类
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

        // Student student1 = new Student();  传统方式----缺点已经讲过

        // 2. 从Spring中获取Bean对象
        //Student student = (Student)context.getBean("student"); // 根据名称获取 十分不推荐 而且使用了强转
        //Student student = context.getBean(Student.class); // 根据类型获取 只有当此种类型的Bean有且只有一个的时候才可以使用
        Student student = context.getBean("student", Student.class); // 根据名称和类型来获取对象

        // 当在spring中存储两个一样的对象的时，spring是存两份不一样的还是存一份然后用用两个指针指向它？
        /*
         <bean id="student" class="com.spring.demo.Student"></bean>
          <bean id="stu" class="com.spring.demo.Student"></bean>
        */
        Student stu = context.getBean("stu", Student.class);
        System.out.println("stu == student??:"+(stu==student));

        // 3. 使用Bean  来验证我们的存储是否成功
        student.play();
    }
}
